package com.kingwang.training.ooad.coffeemaker.badway;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 咖啡机
 *
 * @author King
 */
@Component
public class CoffeeMaker {
    @Resource
    private Button button;

    @Resource
    private Light light;

    @Resource
    private Boiler boiler;

    @Resource
    private WarmerPlate plate;

    /**
     * 冲煮方法
     */
    public void brew() {
        // 所有的业务逻辑仍然全部写在这里
        // 因此这个类是个“上帝类”（全知全能）

        // Button、Light、Boiler和WarmerPlate类的存在意义是什么？
        // 在这里完全可以使用一个CoffeeMakerApi代替这几个类

        // 这个设计是这样得出的：
        // 我们读一遍规格说明书，发现了一些可能的名词，对它们之间的关系做了一些推断，然后就基于这些推理画出了一幅UML图。
        // 如果我们同意把这些决策作为架构，并根据它们来进行实现，我们最终得到的就是一个被一些水蒸气类包围的全能的CoffeeMaker类。
        // 我们完全可以使用C来编写它！
    }
}
